The present invention relates to computer systems and particularly to execution of operations, such as I/O (input/output) operations, for one computer architecture on another computer architecture.
In some computer architectures, the operations performed for a “native” architecture, such as native I/O operations, cannot be executed directly on a “primary” architecture. In such circumstances, the “native” architecture and the “primary” architecture are not interoperable.
The non-interoperability of computer systems of different architectures often arises in connection with the IBM z/Architecture, the IBM z/Operating System and other closed computer architectures. Such closed architectures are prevalent for mainframe computers and are in contrast to computer systems running Windows, Linux, Unix, and other operating systems on other system architectures. The z/Architecture is IBM's 64-bit computing architecture for the current generation of IBM's mainframe computers as of the filing date. The IBM z/Architecture systems retain backward compatibility with previous IBM 31-bit (ESA/390) and 24-bit (S/370) architectures.
In the native IBM computer z/architecture using the IBM z/OS or other IBM operating systems (OSs), I/O operations are complex and require logic to be applied to the data to locate it on direct access storage devices (DASDs), to block and unblock, and to provide other similar functions. Typically, the processor, sometimes known as a central processing unit (CPU), creates channel programs to enable a channel controller to handle I/O operations. The channel controller, upon receiving a channel program, then executes without assistance from the processor (CPU). When execution is complete or when there is an error, the channel controller communicates back to the CPU using an interrupt. The channel programs for I/O operations are executed in mainframe computers by the IBM channel subsystem (CSS). The IBM CSS directs the flow of information between I/O devices and main storage and uses one or more channel paths as the communication link to or from I/O devices. The channel subsystem performs path-management by testing for channel-path availability and by choosing an available channel path.
Computer systems that use channels for I/O have special hardware components that handle input/output operations in their entirety independently of the systems' CPU(s). The CPU of a system that uses channel I/O typically has only machine instructions to pass input/output commands to the specialized I/O hardware in the form of channel programs. I/O operations thereafter proceed without intervention from the CPU until an event requiring notification of the operating system occurs, at which point the I/O hardware signals an interrupt to the CPU.
A channel is an independent hardware component that coordinates all I/O operations for its attached I/O controllers and/or devices. A channel is an entity that handles all details of I/O operations after being given a list of I/O operations to execute in the form of a channel program. The IBM CSS communicates with I/O devices over channel paths connected between the CSS and I/O devices or their control units. Each channel may support one or more I/O controllers and/or I/O devices. Typically, there is one physical interface per channel, but is not so limited.
Channel programs contain commands for the channel and the various controllers and devices to which the channel connects. The operating system prepares a list of I/O commands and then executes a single I/O machine instruction to initiate the channel program. The channel thereafter assumes control of the I/O operations until they are completed.
In IBM systems, the channel programs impart flexibility that frees CPUs from the overhead of starting, monitoring, and managing individual I/O operations. In IBM mainframes, the computer system uses only the specialized IBM channel hardware that is dedicated to I/O operations.
In IBM mainframe computer systems, CPUs are one of several powerful hardware processors that work in parallel. In addition to CPUs, I/O controllers handle I/O operations exclusively and are connected to channels that are dedicated to I/O operations. In a mainframe system, there may be several CPUs and several I/O processors. The overall IBM architecture is intended to optimize I/O performance without degrading CPU performance. Many mainframe applications include heavily I/O-intensive business applications and the IBM z/architecture helps provide high levels of throughput that distinguish mainframes from other types of computers.
In the IBM z/architecture for mainframes, a channel is a data connection in a hierarchically organized I/O subsystem. In IBM mainframe systems, channels either connect to channel interfaces on devices such as DASDs, printers, terminal concentrators, and so forth (e.g., ESCON, FICON) or they connect to a network (e.g., OSA).
In the IBM z/architecture for mainframes, channels are controlled by channel command words (CCWs) where a channel command word (CCW) is an instruction for a specialized I/O channel processor. The CCW is used to initiate an I/O operation on a channel-attached device. All I/O devices in IBM mainframe systems use CCWs.
In IBM mainframe z/architecture, the CCWs are organized into channel programs. A channel program is a sequence of one or more I/O instructions (that is, one or more CCWs) executed by the I/O channel processor. The operating system signals the I/O channel processor to begin executing the channel program with a SSCH (START SUBCHANNEL) machine instruction. The CPU then is not burdened with I/O operations and proceeds with non-I/O instruction operations until interrupted by an interrupt from the I/O operation. When the I/O operations are complete, the channel posts an interrupt.
When I/O operations are initiated by the machine instruction START SUBCHANNEL, this instruction passes the contents of an operation-request block (ORB) to a subchannel. The contents of the ORB include a subchannel key, an address of the first CCW to be executed, and a specification of the format of the CCWs. The CCW specifies the command to be executed and the storage area, if any, to be used. The execution of START SUBCHANNEL is complete when the ORB contents have been passed to the subchannel and the results of the execution of the instruction are indicated by the condition code set in the program-status word. The CSS fetches the first CCW and decodes it according to the format specified in the ORB.
In order for a non-IBM z/architecture primary computer system having a primary architecture (such as typically used for running Windows, Linux, and/or Unix on a processor) to access data on IBM mainframe-attached DASD storage, an IBM or IBM-compatible mainframe computer performs the functions of the native IBM CSS. Such functions of an IBM CSS include, for example, selecting from multiple paths to devices, dynamic reconnect support, I/O-related measurements, and mainframe configuration support.
Many mainframe computer users have developed, wish to develop, or otherwise acquire computer programs for execution on primary computer systems that are not IBM z/architecture systems. Such users have a need for accessing native I/O storage that operates as IBM mainframe-attached DASD storage.
In order to have greater interoperability of computer systems of different architectures and particularly to have interoperability of I/O operations among such computer systems, there is a need for improved systems operable according to multiple computer architectures.